package com.intelligent.system.auth.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.intelligent.system.auth.dto.OrganizationDTO;
import com.intelligent.system.auth.dto.OrganizationQueryDTO;
import com.intelligent.system.auth.entity.Organization;
import com.intelligent.system.common.response.ResultDO;

import java.util.List;

/**
 * 组织机构服务接口
 */
public interface OrganizationService extends IService<Organization> {
    /**
     * 根据ID查询组织机构
     */
    ResultDO<OrganizationDTO> getOrganizationById(Long id);

    /**
     * 查询所有组织机构
     */
    ResultDO<List<OrganizationDTO>> listAll();

    /**
     * 根据父级ID查询组织机构列表
     */
    ResultDO<List<OrganizationDTO>> listByParentId(Long parentId);

    /**
     * 分页查询组织机构列表
     */
    ResultDO<IPage<OrganizationDTO>> page(OrganizationQueryDTO param);

    /**
     * 新增组织机构
     */
    ResultDO<?> save(OrganizationDTO organizationDTO);

    /**
     * 更新组织机构
     */
    ResultDO<?> update(OrganizationDTO organizationDTO);

    /**
     * 删除组织机构
     */
    ResultDO<?> deleteById(Long id);

    /**
     * 根据组织机构编码查询组织机构
     */
    ResultDO<OrganizationDTO> getByOrgCode(String orgCode);

    /**
     * 获取组织机构及其联系人信息
     */
    ResultDO<OrganizationDTO> getOrganizationWithContacts(Long id);

    // New methods for DTO conversion

} 